package com.bnq.control.common.utils;

import android.util.SparseBooleanArray;

import java.util.HashMap;

/**
 * 对象临时存儲器, 主要用于无法传递对象的Activity, FragmentUi间传同一个对象。
 * Notice:
 */
public class ObjectMap {

    private HashMap<String, Object> mMap;
    private SparseBooleanArray mSparseBooleanArray;


    public void putBoolean(int key, boolean value) {
        if (null == mSparseBooleanArray)
            mSparseBooleanArray = new SparseBooleanArray();
        mSparseBooleanArray.put(key, value);
    }

    public boolean getBoolean(int key) {
        return null != mSparseBooleanArray && mSparseBooleanArray.get(key);
    }

    /**
     * 把obj对象放置暂存区
     *
     * @param key 字符串key, 保证其唯一性
     * @param obj 存储对象
     * @return 存储的对象
     */
    public Object put(String key, Object obj) {
        if (null == mMap) {
            mMap = new HashMap<String, Object>();
        }
        return mMap.put(key, obj);
    }

    /**
     * 从暂存区读取对象
     *
     * @param key 字符串key
     * @return 之前存储的对象
     */
    public Object get(String key) {
        if (null != mMap) {
            return mMap.remove(key);
        }
        return null;
    }

    public Object getValue(String key) {
        if (null != mMap) return mMap.get(key);
        return null;
    }

    /**
     * 从暂存区读取对象
     *
     * @param key 字符串key
     * @return 之前存储的对象
     */
    public Object remove(String key) {
        if (null != mMap) {
            return mMap.remove(key);
        }
        return null;
    }

    /**
     * 从暂存区读取对象
     *
     * @param key 字符串key
     * @return 之前存储的对象
     */
    public Object getAndRemove(String key) {
        return remove(key);
    }
}
